package io.lkt.task.bus.service;

import io.lkt.task.bus.model.DailyPaperInfo;
import io.lkt.task.bus.model.UserInfo;
import io.lkt.task.bus.model.thirdparty.WxNotifyMsgSetInfo;

import java.util.List;

public interface IUserService {

    /**
     * 获取用户微信消息接收开关
     * @param userId
     * @return
     */
    public WxNotifyMsgSetInfo getUserWxMsgAcceptSwitchInfo(Integer userId);

    /**
     * 获取新用户品牌设置提醒状态
     * @param userId
     * @return
     */
    public Integer getNewUserBrandSetPushStatus(Integer userId);

    /**
     * 获取新用户文章访问提醒状态
     * @param userId
     * @return
     */
    public Integer getNewUserVisitPushStatus(Integer userId);

    /**
     * 获取新用户文章分享提醒状态
     * @param userId
     * @return
     */
    public Integer getNewUserShareArticlePushStatus(Integer userId);

    /**
     * 获取用户创建时间
     * @param userId
     * @return
     */
    UserInfo getUserCreateTime(Integer userId);

    /**
     * 查询用户的VIP状态
     * @param userId
     * @return
     */
    Integer getUserVipStatus(Integer userId);

    /**
     * VIP优惠券过期提醒
     * @return
     */
    String generateVipDiscountExpirePushMsg(int couponRemainTime, String profile);

    /**
     * 查询用户订阅相关
     * @param userId
     * @return
     */
    UserInfo getUserSubPnInfo(Integer userId);

    /**
     * 获取用户总数
     * @return
     */
    Integer getLastestUserId();

    /**
     * 获取最旧用户ID
     * @return
     */
    Integer getOldestUserId();

    //查询用户信息
    UserInfo queryUserInfo(Integer userId);

    //按公众号 查询用户
    List<UserInfo> getUserListByGzhCode(String gzhCode);

    //获取没激活的用户
    List<UserInfo> getUserListByNoActivation(String gzhCode);

    //按公众号 查询用户
    List<UserInfo> getAllUserListByGzhCode(String gzhCode);

    List<UserInfo> getUserListByGzhCodeOut(String gzhCode);

    DailyPaperInfo getUserDailyPaper(Integer userId);

    List<UserInfo> queryWillExpire(String profile);

    List<UserInfo> queryVIPHasExpired(String profile);

    List<UserInfo> queryUserListByWeekly(String profile);

    List<UserInfo> queryUserListByCommissionDeduction(String profile);

    String getUserBrandName(Integer userId);

    List<UserInfo> queryNotVipUserList(String gzhCode);

    List<UserInfo> queryNotVipNotDate(String gzhCode);

    String getSysGzh(String gzhCode);

    //查询用户信息 By OpenId
    UserInfo getUserByOpenId(String openId, String gzhCode);

    List<UserInfo> getUserByQqblQkb();
}
